{
    "compilerOptions": {
        "outDir": "./dist/",
        // Подсвечивает все места где не указан тип
        // Однако это не означает, что теперь вовсе нельзя использовать any.
        // Это означает лишь, что в подобных ситуация разработчик должен явно писать any,
        "noImplicitAny": true,
        "module": "ESNext",
        // В какую спецификацию компилируем: для поддержки большинства браузеров
        "target": "es5",
        "jsx": "react-jsx",
        // Компилятор будет обрабатывать не только TS файлы, но и JS файлы
        "allowJs": true,
        "strict": true,
        "moduleResolution": "node",
        // Для абсолютного импорта
        "baseUrl": ".",
        "paths": {
            "@/*": ["./src/*"]
        },
        // esModuleInterop позволяет работать с пакетами, которые используют
        // common js как с обычными пакета с помощью import (require() module.export) = common js
        // import Moment from 'moment';
        // без флага esModuleInterop результат undefined
        // console.log(Moment);
        // c флагом результат [object Object]
        // console.log(Moment);
        "esModuleInterop": true,
        // Если какая-либо библиотека не имеет default import,
        // лоадеры вроде ts-loader или babel-loader автоматически создают их
        // вместо такого импорта
        // import * as React from 'react';
        // можно писать такой
        // import React from 'react';
        "allowSyntheticDefaultImports": true,
        "isolatedModules": true
    },
    "ts-node": {
        "compilerOptions": {
            "module": "CommonJS"
        }
    },
    "include": [
        "./config/jest/setupTests.ts",
        "./src/**/*.ts",
        "./src/**/*.tsx"
    ]
}
